package demo;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class VariableParameterDemo4 {
    public static void main(String[] args) {
        // static <E>List<E> of(E..elements)          创建一个具有指定元素的List集合对象
        // static <E>Set<E> of(E...elements)          创建一个具有指定元素的set集合对象
        // static<K，V>Map<K，V>of(E...elements)       创建一个具有指定元素的Map集合对象

        // method1();
        // method2();
        /*
            method3和method4的使用一样
            且method4方法的阅读性更高
        */
        // method3();
        // method4();
    }

    private static void method4() {
        System.out.println(Map.ofEntries
                (Map.entry("zhangsan", "江苏"),
                 Map.entry("lisi", "上海"),
                 Map.entry("wangwu", "广东")));
    }

    private static void method3() {
        System.out.println(Map.of("zhangsan", "江苏", "lisi", "上海", "wangwu", "广东"));
    }

    private static void method2() {
        // 传递的参数中不能存在重复的元素
        System.out.println(Set.of("a", "b", "c", "d"));
    }

    private static void method1() {
        // List<String> list = List.of("a", "b", "c", "d");
        System.out.println(List.of("a", "b", "c", "d"));

        // 集合的批量添加
        // 首先是通过调用List.of方法来创建一个不可变的集合，of方法的形参就是一个可变参数。
        // 再创建一个ArrayList集合，并把这个不可变的集合中所有的数据，都添加到ArrayList中。
        /*ArrayList<String> list3 = new ArrayList<>(List.of("a", "b", "c", "d"));
        System.out.println(list3);*/
        // 集合的批量添加：简写
        System.out.println(new ArrayList<>(List.of("a", "b", "c", "d")));
    }
}
